package command;


import org.uc3m.ed.factory.panel.FactoriaPanel;
import org.uc3m.ed.implementacion.Command;
import org.uc3m.ed.interfaz_grafica.ventana.PanelDibujo;
import org.uc3m.ed.interfaz_grafica.ventana.VentanaPrincipal;
import org.uc3m.ed.tad.arbol.Heap;
import org.uc3m.ed.tad.arbol.IArbolBinarioIterador;

public class CommandPreOrden implements Command {

	
	public void execute() {
		try{
			PanelDibujo panel= FactoriaPanel.metodoFactoria();
			String texto = " Resultado del Recorrido en Pre-Orden\n--------------------------------------------------------\n\n";
			Heap<Integer,Integer> abb=(Heap<Integer,Integer>) panel.getEstructura();
			IArbolBinarioIterador<Integer, Integer> iterador;
			if (abb!=null)
			{	
				iterador = abb.preorden();
				while(iterador.haySiguiente())
					texto+="Elemento: "+iterador.siguiente().toString()+".\n\n";
				VentanaPrincipal.getConsola().escribirTextoInformacion(texto);
			}
			else
				VentanaPrincipal.getConsola().escribirTextoError("CLASS::Heap::CommandInOrden ERROR::3\n    Debes Crear un Heap antes de hacer un recorrido");
		}catch(Exception e){
			VentanaPrincipal.getConsola().escribirTextoError("CLASS::Heap::CommandInOrden ERROR::2::"+e.toString()+"\n",e.getStackTrace());
		}catch(Error e){
			VentanaPrincipal.getConsola().escribirTextoError("CLASS::Heap::CommandInOrden ERROR::1::"+e.toString()+"\n",e.getStackTrace());
		}
		
	}

}
